/**
 * synchronized 如果多个线程访问同一个synchronized方法，等待当前线程操作完成下一个线程才可以执行
 * 如果一个线程访问一个synchronized方法，另外一个线程访问同一个类中非 synchronized 方法，那么这两个线程异步
 * 如果一个线程访问一个synchronized方法，另外一个线程访问同一个类中另外synchronized方法，后面线程需要得到前面的线程执行完
 */
package test_004;

public class TestSynchronized {
	static {
		try {
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	/**
	 * @param args
	 * @throws IllegalAccessException 
	 * @throws InstantiationException 
	 */
	public static void main(String[] args) throws InstantiationException, IllegalAccessException {
		final ThreadClass td = new ThreadClass();
//		new Thread(td).start();
//		new Thread(td).start();
//		new Thread(td).start();
//		new Thread(td).start();
//		new Thread(td).start();
		
		Thread td1 = new Thread(
			new Runnable(){
				public void run(){
					try {
						td.say1();
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				}
			}
		);
		Thread td2 = new Thread(
				new Runnable(){
					public void run(){
						td.say2();
					}
				}
			);
		td1.start();
		td2.start();
		
		
	}
 
}

